package com.lxd.common.model;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jdk8.LongStreamSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import lombok.*;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 在接口模块-策略模块-短信网关模块需要做校验和封装的POJO类对象
 *
 * @author Dongdong
 * @description
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
public class StandardSubmit implements Serializable {

    private static final long serialVersionUID = -98415111713206511L;
    /**
     * 针对当前短信的唯一标识
     */
    private Long sequenceId;

    private String apikey;

    /**
     * 客户端ID
     */
    private Long clientId;

    /**
     * 客户端的ip白名单
     */
    private String ip;

    /**
     * 客户业务内的uid
     */
    private String uid;

    /**
     * 目标手机号
     */
    private String mobile;

    /**
     * 短信内容的签名
     */
    private String sign;

    /**
     * 短信内容
     */
    private String text;
    /**
     * 短信状态
     */
    private Integer state;

    /**
     * 短信的发送时间
     */
    @JsonSerialize(using = LongStreamSerializer.class)
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDateTime sendTime;

    /**
     * 当前短信的费用
     */
    private Long fee;

    /**
     * 目标手机号的运营商
     */
    private Integer operatorId;


    /**
     * 目标手机号的归属地区号  0451  0455
     */
    private Integer areaCode;

    /**
     * 目标手机号的归属地  哈尔滨，  绥化~
     */
    private String area;
    /**
     *  目标手机号的对应运营商 电信联通移动
     */
    private String mobile_type;

    /**
     * 通道下发的源号码  106934985673485645
     */
    private String srcNumber;

    /**
     * 通道的id信息
     */
    private Long channelId;

    /**
     * 短信的发送状态， 0-等待ing，1-成功，2-失败
     */
    private int reportState;
    /**
     * 短信的签名id
     */
    private Integer signId;

    /**
     * 发送至搜索模块的错误消息
     */
    private String ErrorMsg;
    /**
     * 是否转网
     */
    private boolean isTransfer;
    /**
     * 一小时限流
     */
    private long OneHourLimitMilli;


    // 后续再做封装~~~~

}